package model;

import java.io.Serializable;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


@Entity
@Table(name="sgp_cliente")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
@AttributeOverrides(
		value={@AttributeOverride(name="id",column=@Column(name="id_cliente"))})
public class Cliente extends ObjBase implements Serializable {
    
    
    @Column(name="nome_cliente")
    private String nomeCliente;
    @Column(name="nome_empresa")
    private String nomeEmpresa;
    private String endereco;
    private String cnpj;
    private String telefone;
    private String email;
    
    @ManyToOne
    @JoinColumn(name="fk_estado")
    private Estado estado;
    
    public String getNomeCliente() {
        return nomeCliente;
    }

    public void setNomeCliente(String nomeCliente) {
        this.nomeCliente = nomeCliente;
    }

    public String getNomeEmpresa() {
        return nomeEmpresa;
    }

    public void setNomeEmpresa(String nomeEmpresa) {
        this.nomeEmpresa = nomeEmpresa;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Estado getEstado() {
        return estado;
    }

    public void setEstado(Estado estado) {
        this.estado = estado;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 97 * hash + (this.nomeCliente != null ? this.nomeCliente.hashCode() : 0);
        hash = 97 * hash + (this.nomeEmpresa != null ? this.nomeEmpresa.hashCode() : 0);
        hash = 97 * hash + (this.endereco != null ? this.endereco.hashCode() : 0);
        hash = 97 * hash + (this.cnpj != null ? this.cnpj.hashCode() : 0);
        hash = 97 * hash + (this.telefone != null ? this.telefone.hashCode() : 0);
        hash = 97 * hash + (this.email != null ? this.email.hashCode() : 0);
        hash = 97 * hash + (this.estado != null ? this.estado.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Cliente other = (Cliente) obj;
        if ((this.nomeCliente == null) ? (other.nomeCliente != null) : !this.nomeCliente.equals(other.nomeCliente)) {
            return false;
        }
        if ((this.nomeEmpresa == null) ? (other.nomeEmpresa != null) : !this.nomeEmpresa.equals(other.nomeEmpresa)) {
            return false;
        }
        if ((this.endereco == null) ? (other.endereco != null) : !this.endereco.equals(other.endereco)) {
            return false;
        }
        if ((this.cnpj == null) ? (other.cnpj != null) : !this.cnpj.equals(other.cnpj)) {
            return false;
        }
        if ((this.telefone == null) ? (other.telefone != null) : !this.telefone.equals(other.telefone)) {
            return false;
        }
        if ((this.email == null) ? (other.email != null) : !this.email.equals(other.email)) {
            return false;
        }
        if (this.estado != other.estado && (this.estado == null || !this.estado.equals(other.estado))) {
            return false;
        }
        return true;
    }
       
}